// userinfo路由 的 处理函数

// 数据库操作模块
const db = require('../db/index');
// 引入加密
const bcrypt = require('bcryptjs');

exports.getUserInfo = (req, res) => {
    // 查询SQL语句: 根据用户id,查询用户基本信息
    // 不需要password,防止密码泄露
    const sqlSelect =
        'SELECT id,username,nickname,email,user_pic FROM ev_users WHERE id=?';

    // 执行SQL语句
    db.query(sqlSelect, req.user.id, (err, results) => {
        // SQL语句执行失败
        if (err) return res.cc(err);
        // SQL语句执行成功，但是查询到数据 数目 不对
        if (results.length !== 1) return res.cc('获取用户信息失败!');
        // 查询成功，将用户信息响应给客户端
        res.send({
            status: 0,
            message: '获取用户信息成功!',
            data: results[0]
        });
    });
};

// 更新用户基本信息
exports.updateUserInfo = (req, res) => {
    // 更新用户SQL语句
    const sqlUpdate = 'UPDATE ev_users SET ? WHERE id=?';

    // 执行SQL 语句
    db.query(sqlUpdate, [req.body, req.body.id], (err, results) => {
        // SQL执行失败
        if (err) return res.cc(err);
        // SQL执行成功，但是影响行数不为1，所以执行失败
        if (results.affectedRows !== 1) return res.cc('更新用户信息失败!');
        // 执行成功
        return res.cc('更新用户信息成功!', 0);
    });
};

// 重置密码
exports.updatePassword = (req, res) => {
    // 1.定义sql语句
    const sqlSelect = 'SELECT * FROM ev_users WHERE id=?';
    // 2.执行sql,确定用户是否存在
    db.query(sqlSelect, req.user.id, (err, results) => {
        if (err) return res.cc(err);
        if (results.length !== 1) return res.cc('用户不存在!');
        // 3.判断提交的旧密码是否正确
        const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password);
        if (!compareResult) return res.cc('原密码不正确!');
        // 密码正确,执行密码更新
        const sqlUpdate = 'UPDATE ev_users SET password=? WHERE id=?';
        // 加密新密码
        const newPwd = bcrypt.hashSync(req.body.newPwd, 32);
        db.query(sqlUpdate, [newPwd, req.user.id], (err, results) => {
            if (err) return res.cc(err);
            // SQL语句执行成功,但是影响行数不止一行,出错!
            if (results.affectedRows !== 1) return res.cc('更新密码失败!');
            // 更新密码成功
            res.cc('更新密码成功!', 0);
        });
    });
}

// 更新用户头像
exports.updateAvatar = (req, res) => {
    // 定义更新头像的SQL语句
    const sqlUpdate = 'UPDATE ev_users SET user_pic=? WHERE id=?';
    db.query(sqlUpdate, [req.body.avatar, req.user.id], (err, results) => {
        console.log(req.body.avatar,req.user.id,results.affectedWors);
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) return res.cc('头像更新失败!');
        return res.cc('头像更新成功!', 0);
    });
}